--# -path=.:prelude:alltenses

abstract Syllogism = LexiconSyll ** {

    flags startcat = Sentence;
    cat Syllogism ; Subject ; Property ; PropertyPart; Sentence; Word; 
      Const; Constant; Sentences; AllQ; NoQ; Conclusion;
   
        data mkSyllogism  : Sentences -> Conclusion -> Syllogism;
        data appSentences : Sentence -> Sentences -> Sentences; 
        data mkSentences  : Sentence -> Sentence ->  Sentences;


     fun
         ToSubject  : Word -> Subject;
         ToProperty : PropertyPart -> Property;
         ToConstant : Const -> Constant;
         ToPropertyPart : Word -> PropertyPart;

         ToConclusion : Sentence -> Conclusion;

         CpP :  Constant -> Property -> Sentence;
         CnP :  Constant -> Property -> Sentence;
         SaP :  AllQ -> Subject -> Property -> Sentence;
         SeP :  NoQ -> Subject -> Property -> Sentence;
         SoP :  Subject -> Property -> Sentence;
         SiP :  Subject -> Property -> Sentence;
         VWord : V -> Word ;
         AWord : A -> Word ;
         NWord : N -> Word ;
         CWord : PN -> Const; --Constant;
         All   : AllQ;
         Every : AllQ;
         No    : NoQ;

         PPhrase : A -> N -> Property;
         SPhrase : A -> N -> Subject;
 
         And :  PropertyPart -> PropertyPart -> Property;
         Or :  PropertyPart -> PropertyPart -> Property;
 
}

